package logger

// LoggerIO 实现 io.Writer 接口的日志适配器。
type LoggerIO struct {
	LogLv logLevel   // 日志等级
	Key   LogKeyEnum // 日志Key
}

// NewLoggerIO 创建一个新的 LoggerIO 实例。
// 参数:
//   loglv: 日志等级。
//   key: 日志Key。
// 返回值:
//   *LoggerIO: LoggerIO 实例。
func NewLoggerIO(loglv logLevel, key LogKeyEnum) *LoggerIO {
	return &LoggerIO{
		LogLv: loglv,
		Key:   key,
	}
}

// Write 实现 io.Writer 接口，写入日志。
// 参数:
//   p: 写入的字节数据。
// 返回值:
//   int: 写入的字节数。
//   error: 错误信息。
func (this *LoggerIO) Write(p []byte) (n int, err error) {
	this.PAlart(string(p))
	return 0, nil
}

// PAlart 根据日志等级输出日志。
// 参数:
//   params: 日志内容。
func (this *LoggerIO) PAlart(params ...interface{}) {
	switch this.LogLv {
	case LogLevelDebug:
		Debug(this.Key, params...)
	case LogLevelInfo:
		Info(params...)
	case LogLevelWarn:
		Warn(params...)
	case LogLevelError:
		Error(params...)
	case LogLevelFatal:
		Fatal(params...)
	}
}
